package com.carrental.crm.dto;

import lombok.Data;

import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Future;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 营销活动数据传输对象
 */
@Data
public class MarketingCampaignDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    private Long id;

    /**
     * 活动名称
     */
    @NotBlank(message = "活动名称不能为空")
    private String name;

    /**
     * 活动类型（1-满减，2-折扣，3-优惠券，4-赠品）
     */
    @NotNull(message = "活动类型不能为空")
    private Integer type;

    /**
     * 活动描述
     */
    private String description;

    /**
     * 开始时间
     */
    @NotNull(message = "开始时间不能为空")
    private LocalDateTime startTime;

    /**
     * 结束时间
     */
    @NotNull(message = "结束时间不能为空")
    @Future(message = "结束时间必须是将来的时间")
    private LocalDateTime endTime;

    /**
     * 优惠金额
     */
    @DecimalMin(value = "0.01", message = "优惠金额必须大于0")
    private BigDecimal discountAmount;

    /**
     * 折扣率
     */
    @DecimalMin(value = "0.01", message = "折扣率必须大于0")
    private BigDecimal discountRate;

    /**
     * 使用条件（满多少金额可用）
     */
    @DecimalMin(value = "0", message = "使用条件必须大于等于0")
    private BigDecimal useCondition;

    /**
     * 适用车型，多个车型ID用逗号分隔
     */
    private String applicableVehicles;

    /**
     * 适用门店，多个门店ID用逗号分隔
     */
    private String applicableStores;

    /**
     * 活动状态（1-未开始，2-进行中，3-已结束，4-已取消）
     */
    private Integer status;

    /**
     * 活动规则
     */
    private String rules;

    /**
     * 活动图片
     */
    private String image;

    /**
     * 创建人ID
     */
    private Long creatorId;

    /**
     * 创建人姓名
     */
    private String creatorName;
} 